package config

import (
	"fmt"
	"os"
	"path"

	"github.com/fsnotify/fsnotify"
	"github.com/spf13/viper"
)
var appConfig = viper.New()
func Viper() *viper.Viper {
	return appConfig
}

type MysqlConf struct {
	Host string
	User string
	Passwd string
	Port int
	DBName string
}

type Config struct{

}


func Init(cfgPath string) {
	// 
	cfgPath = path.Clean(cfgPath) 
	fmt.Println("配置路径为：",cfgPath)
	// 监听配置
	go watchConfig(cfgPath)
	// 加载
	reloadConfig(cfgPath)
}
// 监听配置信息的更改
func watchConfig(cfgPath string) {
	appConfig.OnConfigChange(func(in fsnotify.Event) {
		// 重新加载配置
		fmt.Println("配置发送更改，重新载入......")
		reloadConfig(cfgPath)
	})
	appConfig.WatchConfig()
}
// 加载/重载
func reloadConfig(cfgPath string) {
	appConfig.AddConfigPath(path.Dir(cfgPath))
	// 文件名
	appConfig.SetConfigName(path.Base(cfgPath))
	// 后缀  .yaml
 	appConfig.SetConfigType(path.Ext(cfgPath)[1:])
	if err := appConfig.ReadInConfig();err!=nil {
		fmt.Println("ReadInConfig Fail, err: ",err)
		os.Exit(-1)
	}
}